Linux httpd

1 背景知识

1.1 HTTP

HTTP协议,全称 HyperText Transfer Protocol ,中文名为超文本传输协议,是互联网中最常用的一种网络协议。HTTP 的重要应用之一是 WWW 服务。设计HTTP协议的最初目的就是提供一种发布和接受 HTML 页面的方法。

HTTP 协议是互联网上最常用的通信协议之一。应用场景极为广泛。最流行的场景为WEB浏览器和web 服务器之间的通信。

WWW,全称为 World Wid Web,常称之为 Web,中文译为“万维网”。它是目前互联网上最受用户欢迎的信息服务形式。HTTP 协议的 WWW 服务应用默认端口为80 ,另外的一个加密 WWW 服务应用 HTTPS 默认端口为443 ,主要用于网银,支付和安全性较高的业务。

1.2 Apache

Apache 是世界使用排名第一的Web 服务器软件。它可以运行在所有的计算机平台上。

Apache 源于 NCSAhttpd 服务器,经过多次迭代开发,成为了世界上最流行的Web 服务器软件之一。 Apache 来自 a patchy server 的连读音,意思是充满补丁的服务器,由于是开源软件,所以有很多人为他开发新的功能、新的特性、修复缺陷。

Apache 的特点是简单、速度块、性能文件,并可以作为代理服务器使用。

2 Apache 安装

dnf install httpd -y

3 Apache 配置文件

rpm 命令中有 -qc ,可以显示软件相关的配置文件。其中 /etc/httpd/conf/httpd.conf 为Apache 软件的配置文件。

rpm -qc httpd 
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-optional.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
/etc/httpd/conf/httpd.conf
/etc/httpd/conf/magic
/etc/logrotate.d/httpd
/etc/sysconfig/htcacheclean

4 Apache 配置文件解析

选项 说明
DocumentRoot "/var/ www/html" 默认Web目录
ServerRoot "/etc/httpd" 服务运行时的目录。
Listen 80 服务运行的端口。
User/Group apache 启动服务所使用的用户。
ServerAdmin root@localhost 服务管理员的邮箱。

4.1 根目录

DocumentRoot 设置根目录的位置。

DocumentRoot "/var/www/html"

4.2 目录权限

表示对于 / 根目录所有的网页都不允许访问。

<Directory />
    AllowOverride none
    Require all denied
</Directory>

表示对于 /var/www 目录所有的网页都允许访问。

<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>

表示对于 /var/www/html 目录所有的网页都允许访问。

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
Note

对于Apache 服务可以使用 Directory 控制目录的访问权限,上面三种规则可以同时生效。

5 Apache 基于主机头

创建新的虚拟机,使用不同的域名指向 Apache 的不同目录。

<VirtualHost 192.168.10.175:80>
        ServerName www.web1.com
        DocumentRoot /var/www/html/web1
</VirtualHost>
<VirtualHost 192.168.10.175:80>
        ServerName www.web2.com
        DocumentRoot /var/www/html/web2
</VirtualHost>

5.1 验证 web 服务是否正常

curl http://www.web1.com:80
curl http://www.web2.com:80

6 Apache 基于端口号

创建新的虚拟机,使用不同的端口号指向 Apache 的不同目录。也可以通过 Require not ip 选项控制网站访问。

Listen 8080
<VirtualHost 192.168.10.175:8080>
        DocumentRoot /var/www/html/web1
</VirtualHost>
<Directory /var/www/html/web1>
        <Requireall>
        Require all granted
        Require not ip 192.168.10.176
        </Requireall>
</Directory> 
Listen 8081
<VirtualHost 192.168.10.175:8081>
        ServerName www.web1.com
        DocumentRoot /var/www/html/web2
</VirtualHost>

6.1 验证 web 服务是否正常

curl http://server1:8080
curl http://server1:8081

7 配置虚拟目录

Alias /net "/uos"
<Directory "/uos">
    Options Indexes FollowSymLinks
    AllowOverride all
    Require all granted
</Directory>
<VirtualHost 192.168.10.175:80>
        ServerName www.uosexam.com
        DocumentRoot /var/www/virsh
</VirtualHost>